namespace DotNetNuke.Services.Url.FriendlyUrl
{
    using DotNetNuke.Entities.Portals;
    using DotNetNuke.Entities.Tabs;
    using DotNetNuke.Framework;
    using System;

    public abstract class FriendlyUrlProvider
    {
        private static FriendlyUrlProvider objProvider = null;

        static FriendlyUrlProvider()
        {
            CreateProvider();
        }

        private static void CreateProvider()
        {
            objProvider = (FriendlyUrlProvider) Reflection.CreateObject("friendlyUrl");
        }

        public abstract string FriendlyUrl(TabInfo tab, string path);
        public abstract string FriendlyUrl(TabInfo tab, string path, string pageName);
        public abstract string FriendlyUrl(TabInfo tab, string path, string pageName, PortalSettings settings);
        public abstract string FriendlyUrl(TabInfo tab, string path, string pageName, string portalAlias);
        public static FriendlyUrlProvider Instance()
        {
            return objProvider;
        }
    }
}

